เอกสารนี้เป็น คู่มืออธิบายการทำงาน ของหน้าจอจัดการ Task (QC + NCR) ในระบบ ConstructQ สำหรับทีมพัฒนาซอฟต์แวร์ ครอบคลุมตั้งแต่ เริ่มสร้าง Task จนปิด Task ผ่านทุกสถานะใน Workflow Lifecycle และอธิบายบทบาทของผู้ใช้แต่ละคนที่ต้องดำเนินการในแต่ละขั้นตอน
| Code | ชื่อไทย | ชื่ออังกฤษ | ความหมาย | Chip |
|---|---|---|---|---|
| created | สร้างงาน | Created | สร้างขึ้นแต่ยังไม่มอบหมาย | created |
| assigned | มอบหมายแล้ว | Assigned | กำหนดผู้ตรวจแล้ว · รอเริ่มตรวจ | assigned |
| in_progress | กำลังตรวจ | In Progress | Inspector รับงาน · กำลังตรวจหน้างาน | in_progress |
| review | รอตรวจสอบ | Review | ส่งผลแล้ว · รอ QC Manager ตรวจทาน | review |
| done | เสร็จสิ้น | Done | อนุมัติปิด (terminal) | done |
| blocked | ติดขัด | Blocked | หยุดชั่วคราว · รอเหตุผลอื่น | blocked |
| rejected | ตีกลับ | Rejected | QCM ไม่อนุมัติ · ส่งกลับให้แก้ | rejected |
| ncr_open | NCR เปิด | NCR Open | พบข้อบกพร่อง · รอ Sub แก้ไข | ncr_open |
| ncr_verify | รอตรวจซ้ำ | NCR Verify | Sub แก้เสร็จ · รอ Inspector ตรวจซ้ำ | ncr_verify |
┌────────────────────────────────────────────┐
│ ▼
[created] ──assign──▶ [assigned] ──receive──▶ [in_progress] ──submit──▶ [review] ──approve──▶ [done] 🎉
│ │
│ └──reject──▶ [rejected] ──rework──┐
│ │
│ ┌───────────────────────────┘
│ ▼
│ (back to in_progress)
▼
[blocked] ─unblock──▶ (back to previous state)
ตรวจพบข้อบกพร่อง (fail) ระหว่างตรวจ Checklist:
[in_progress] ──fail(item)──▶ [ncr_open] ──Sub แก้ไข──▶ [ncr_verify] ──Inspector ตรวจซ้ำ──▶ กลับ [in_progress]
PM เข้าหน้า Task Management → กดปุ่ม "+ สร้าง Task ใหม่" หรือ "📋 สร้าง Task แบบ Bulk" → กรอกข้อมูลพื้นฐาน (Code · Name · Zone · WBS · Priority · Workflow · Checklist · Start-Due · Inspector · Approver) → กด "สร้าง Task" → Task ถูกสร้างในสถานะ created
QCM เข้าดู Task ในสถานะ created → กดปุ่ม "มอบหมาย" → เลือกผู้ตรวจจาก picker (สรุปว่างสุดขึ้นก่อน) → ระบบส่ง email แจ้ง Inspector → สถานะเปลี่ยนเป็น assigned
Inspector รับ push notification บนมือถือ → เปิดแอป → เห็น Task ในรายการ → แตะการ์ด → หน้ารายละเอียด → กด "เริ่มตรวจ Checklist" → ระบบบันทึก GPS check-in → สถานะเปลี่ยนเป็น in_progress
ผ่าน Tab strip เลือกหมวด → Circle stepper แสดงข้อในหมวด → ดู Rule chip 📏 (เกณฑ์ + severity + auto-NCR/warn) → ตอบ widget ตาม type (passfail / number / radio / checkbox / date / signature / photo / color / text / longtext) → แนบรูปประกอบ + comment ทุกข้อ → ✓ badge สีเหลืองยึดบน stepper
ตอบครบทุกข้อ + ทุกข้อผ่านเกณฑ์ → กด "✓ ส่งผลการตรวจ + เซ็นรับรอง" → สถานะเปลี่ยนเป็น review → รอ QC Manager ตรวจทานผ่าน Web
กด "✗ ไม่ผ่าน" ที่ item ใด → ระบบเปิด confirm dialog "ยืนยันการสร้าง NCR?" → ยืนยัน → ระบบสร้าง NCR อัตโนมัติพร้อม severity จาก rule → แจ้ง Sub Contractor · Task state เปลี่ยนเป็น ncr_open เมื่อ submit
Sub เข้าแอปเห็น NCR ที่ต้องแก้ → เปิดดู root cause + corrective action → ดำเนินการแก้ที่หน้างาน → ถ่ายรูป Before/After → กรอกหมายเหตุการแก้ → กด "ส่งกลับให้ตรวจซ้ำ" → สถานะ NCR เปลี่ยนเป็น ncr_verify
Inspector ได้รับ notification → เปิดแอป → เห็น NCR สถานะ ncr_verify → ตรวจหน้างานตามที่ Sub แก้ → ยืนยันผ่าน = NCR closed / ยังไม่ผ่าน = NCR กลับ ncr_open
QCM เข้าดู Task ที่ state = review → ตรวจทาน Checklist tab (ทุกข้อ pass · comments · photos) + NCR tab (ปิดครบหรือยัง) + Audit tab (traceable) → กด "✓ อนุมัติ" หรือ "↩ ตีกลับ"
QCM กด "✓ อนุมัติ" → Task state เปลี่ยนเป็น done · Audit log บันทึก · Task list แสดงในกลุ่ม completed · PM เห็นภาพรวมใน dashboard
QCM กด "↩ ตีกลับ" → กรอกเหตุผล → Task state เปลี่ยนเป็น rejected · กระเด้ง notification กลับให้ Inspector → เข้าสู่รอบใหม่ (rework loop)
| หน้าจอ | Feature | Trigger |
|---|---|---|
| Task List (Kanban) | 7 คอลัมน์ตาม state · drag การ์ดเปลี่ยน state | เข้าหน้าหลัก · เลือก Kanban view |
| สร้าง Task ใหม่ | ฟอร์ม 4 section: Basic · Checklist+Workflow · Assign · Attachments | ปุ่ม "+ สร้าง Task ใหม่" มุมขวาบน |
| Bulk Create | WBS Hierarchical Tree · เลือก L3 หลายแถว · Defaults ครั้งเดียว | ปุ่ม "📋 สร้าง Task แบบ Bulk" |
| Task Detail · Overview | Description · pass/NCR/total/rate · Info sidebar + Actions | คลิกการ์ด Task |
| Task Detail · Audit | Timeline actions · CSV export | Tab "Audit Log" |
| สถานะ | ปุ่มที่โผล่ | ผลลัพธ์ |
|---|---|---|
| created | มอบหมาย (Assign) | เลือก Inspector → state → assigned |
| review | ✓ อนุมัติ / ↩ ตีกลับ | อนุมัติ → done · ตีกลับ → rejected |
| blocked | ปลดบล็อก | คืนกลับสถานะก่อนถูกบล็อก |
| ทุกสถานะ (ยังไม่ done) | 🚫 แจ้งติดปัญหา | state → blocked · notify PM |
| หน้าจอ | Feature | เทียบกับ Web |
|---|---|---|
| Task List | Role filter chips · f-chip filters (all/today/open/ncr/done) | Kanban view · list view |
| Task Detail | 4 tabs: Overview · Lifecycle · Checklist · NCR · Docs · Audit | Task Detail (Web) |
| Checklist Exec | Tab strip หมวด + Circle stepper + Rule chip + Type widgets | ไม่มี — เฉพาะ Mobile |
| NCR Detail | Root cause · Corrective action · Photos before/after | NCR Detail (Web) |
ทุก action ในระบบถูกบันทึกใน task_audit_log ตามมาตรฐานงานก่อสร้างไทย · เก็บ:
| ts | actor | role | action | detail |
|---|---|---|---|---|
| 2026-06-25 09:00:00 | Son Prasertsri | QCM | task.created | สร้าง Task จาก Checklist 'ตรวจงานสี v1.0' |
| 2026-06-25 09:00:01 | System | — | workflow.linked | ผูก Workflow: มาตรฐาน QC (7 ขั้น) |
| 2026-06-26 08:30:11 | Son Prasertsri | QCM | task.assigned | มอบหมาย Step 2 → Kittisak Chaiwatn |
| 2026-06-26 08:31:00 | System | — | notification.sent | Email แจ้ง Kittisak |
| 2026-06-27 09:15:24 | Kittisak Chaiwatn | QC | task.received | รับงาน · เริ่มตรวจหน้างาน |
| 2026-06-27 09:15:25 | System | — | state.changed | assigned → in_progress |
| สถานะ | PM (Web) | QCM (Web) | Inspector (Mobile) | Sub (Mobile) |
|---|---|---|---|---|
| created | ✅ สร้าง | ➡ มอบหมาย | — | — |
| assigned | 👀 ดู | 👀 ดู · แก้ assignee | 📥 รับงาน | — |
| in_progress | 👀 ดู | 👀 ดู progress | ✅ ตรวจ Checklist | — |
| ncr_open | 👀 ดู · อนุมัติงบ (ถ้ามี) | 👀 ติดตาม | — | ✅ แก้ไข |
| ncr_verify | — | 👀 ติดตาม | ✅ ตรวจซ้ำ | 👀 รอผล |
| review | 👀 ดู pending | ✅ Approve / Reject | 👀 รอผลตรวจทาน | — |
| rejected | 👀 ดู | 👀 ดู | ✅ แก้ไข + ส่งใหม่ | — |
| blocked | ✅ ปลดล็อก (approval) | ✅ ปลดล็อก | 👀 ดู | — |
| done | ✅ ปิดโครงการ · ภาพรวม | 👀 ดู archive | 👀 ดู history | — |
tasks · task_audit_log · ncrs · เข้าใช้จากทั้งสองแพลตฟอร์มinternal/eval/criteria.go) คำนวณ pass/warn/failtask_photos